Cardioid linkage

Move generator point G

Locus

A = Point(a)
B = Point(a)
c = Circle(A, B)
b = Segment(B, A)
C = Point(c)
d = Segment(A, C)
D = Midpoint(B, C)
A' = Mirror(A, D)
e = Segment(C, A')
f = Segment(A', B)
E = Midpoint(d)
g = LineBisector(A', E)
C' = Mirror(C, g)
h = Segment(A', C')
i = Segment(C', E)
F = Midpoint(C', E)
G = Midpoint(E, F)
j = LineBisector(C, G)
E' = Mirror(E, j)
k = Segment(C, E')
l = Segment(E', G)
C'_1 = Mirror(C, E')
m = Segment(E', C'_1)
loc1 = Locus(C'_1, C)
n = false